<?php
include_once __DIR__ . '/common/common.php';
//ini_set('display_errors','on');//是否显示当前错误
/*error_reporting(0);//不显示任何错误
function error_dispose($erro,$errstr,$errfile,$errlin)
{
    echo '错误级别'.$erro;//错误级别，
    echo "<br/>";
    echo $errstr;//错误信息
    echo "<br/>";
    echo $errfile;//错误的文件名
    echo "<br/>";
    echo $errlin;//错误的行号
}
//set_error_handler(必须。规定发生错误时运行的函数)设定用户自定义的错误处理函数. 方便用户自己定义来处理运行中的错误.
set_error_handler('error_dispose');*/
//max();

//echo ;//语法错误，不会在set_error_handler('error_dispose')中出现，会出现服务器500
//echo 'ok';
/*Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常，则代码将照常继续执行。但是如果异常被触发，会抛出一个异常。
Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"
抛出的异常没有人接，会出现500
 $input=-10;
try
{
    if ($input<10)
    {
        throw new Exception('当前的金钱数额不对');//抛出一条错误信息会被下面的代码块接收到，try代码块外面不会执行
    }
    //验证是否存在此数据
    //验证数据内容
    //插入数据
}catch (Exception $exception)
{
    //接收相关错误信息
    echo $exception->getMessage();//下面的代码会执行
}
echo '其他内容';
*/



/*function exception_dispose(Exception $exception)
{
    echo $exception->getMessage();
}
set_exception_handler('exception_dispose');//注册异常处理函数
$input=-10;
if ($input<0)
{
    throw new Exception('金钱数额不对1');//没接收，没写在try代码块的话只会执行到这里，下面的不会执行
}
echo '其他内容';*/


/*new Exception()内置异常类
 *
 *
 * class workException extends Exception
{
    public function __construct($message = "", $code = 0, Throwable $previous = null)
    {
        //echo $message;改写父级的析构
        parent::__construct($message, $code, $previous);调用父级的析构
    }
}
class taskException extends Exception
{
    public function __construct($message = "", $code = 0, Throwable $previous = null)
    {
        echo $message;
        //parent::__construct($message, $code, $previous);
    }
}

try
{
    //工作的逻辑代码
    throw new workException('work的异常');
}catch (workException $workException)
{
    echo $workException->getMessage();
}catch (taskException $taskException)
{

}catch (Exception $exception)//如果throw new workException抛出没有$workException->getMessage()的话会找父级Exception $exception
{
    echo '没有work的异常类';
}
*/


/*function exception_dispose(Throwable $exception)//用Throwable可以捕获echo ;这个错误
{
    echo $exception->getMessage();
    echo $exception->getFile();
    echo $exception->getLine();
}
set_exception_handler(必需。规定未捕获的异常发生时调用的函数)
set_exception_handler('exception_dispose');//用Throwable可以捕获echo ;这个错误
function mm()
{
        echo '脚本挂掉后做的事';
}
register_shutdown_function('mm');//echo ;脚本挂掉之后触发，
include '857.php';*/
//set_error_handler(必需。规定发生错误时运行的函数) 函数设置用户自定义的错误处理函数。
/*set_error_handler(function ($erro,$errstr,$errfile,$lin){//系统上的错误，比如echo一个未定义的变量
    echo $errstr;
});
max();
if (true)
{
    //trigger_error() 函数创建用户定义的错误消息
    trigger_error('自定义错误信息');//抛出一个系统错误
}*/


function work()
{
    throw new Exception('这里是work');
}
try
{
    work();
}catch (Exception $exception)
{
    echo $exception->getMessage();//返回用户自定义的异常信息
}